package main

import (
	"fmt"
	"math"
	"strconv"
)

//示例 1:
//
//输入: 123
//输出: 321
//示例 2:
//
//输入: -123
//输出: -321
//示例 3:
//
//输入: 120
//输出: 21
func main() {
	i := 123
	i = reverse(i)
	fmt.Println(i)
}

func reverse(x int) int {
	flag := false

	if x < 0 {
		flag = true
		x = int(math.Abs(float64(x)))
	}
	s := strconv.Itoa(x)

	arr := []rune(s)
	for i, j := 0, len(arr)-1; i < j; i, j = i+1, j-1 {
		if arr[i] != '-' {
			arr[i], arr[j] = arr[j], arr[i]
		}
	}
	s = string(arr)
	i, _ := strconv.Atoi(s)

	if i > 1<<31 - 1 {
		return 0
	}

	if flag {
		if -i < -2<<31 {
			return 0
		}
		return -i
	}
	return i
}
